Caches are generally small, fast storage buffers employable to store information, such as code or data, in order for a processing device to more quickly and efficiently have access to the information. Typically, it is faster for the processing device to read the smaller memory of the cache than to read a main memory. Also, with the rapid increase of intensive computational requirements, such as graphical processing and advanced numerical analysis, their importance in a computing system will only increase.
Typically, when a cache does not have selected information, the sets of the cache are managed by employing the least recently used (LRU) function. The LRU function determines the last way accessed within the cache. Then, the cache replaces the information within the LRU address range with the newer information. This replacement allows the processor to quickly access the selected information the next time this information is selected. Furthermore, this replacement also increases the chances of the processor finding associated information, as the replaced way cache data can have temporal or spatial locality.
However, there are issues related to the employment of LRU functionality in caches. One such issue is that information to be stored to a cache does not utilize the cache in the same way. For instance, some information, such as graphics, is erased from the cache after the processor is finished reading the appropriate cache way, and overwritten with other information. However, the LRU function would not immediately erase the graphical information, as the information would not necessarily be the least recently used, even if this graphical information is only to be used once, and the information overwritten instead is information that would typically be used a number of times, such as a code segment. This overwriting of information that could be accessed multiple times with information that is used only once results in an inefficient utilization of cache resources. Furthermore, information employed by the processor a plurality of times, such as code in navigational systems, would be erased by the LRU functionality if this data becomes the least recently used.
Furthermore, the partitioning of a cache into groups of ways can be an issue. A partition is generally defined as a grouping of ways in a cache that share associated update and replacement strategies. Although partitions can be defined for caches, there are issues concerning deriving and implementing a replacement strategy for the ways within the caches. For instance, significant hardware resources are required for cache partitions and complexity of the logic.
Therefore, what is needed is cache partition management that overcomes the limitations of conventional cache partition management.